name: Build Release

on: workflow_dispatch

permissions:
  contents: write

jobs:
  build_wheels:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: "recursive"

      # Used to host cibuildwheel
      - uses: actions/setup-python@v3
        with:
          python-version: "3.8"

      - name: Install cibuildwheel
        run: python -m pip install cibuildwheel==2.12.1

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install -e .[all]

      - name: Build wheels
        run: python -m cibuildwheel --output-dir wheelhouse
        env:
          # disable repair
          CIBW_REPAIR_WHEEL_COMMAND: ""

      - uses: actions/upload-artifact@v3
        with:
          path: ./wheelhouse/*.whl

  build_sdist:
    name: Build source distribution
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: "recursive"
      - uses: actions/setup-python@v3
        with:
          python-version: "3.8"
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip build
          python -m pip install -e .[all]
      - name: Build source distribution
        run: |
          python -m build --sdist
      - uses: actions/upload-artifact@v3
        with:
          path: ./dist/*.tar.gz

  release:
    name: Release
    needs: [build_wheels, build_sdist]
    runs-on: ubuntu-latest

    steps:
      - uses: actions/download-artifact@v3
        with:
          name: artifact
          path: dist
      - uses: softprops/action-gh-release@v1
        with:
          files: dist/*
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}